export type SameShape<Out, In extends Out> = In & { [Key in Exclude<keyof In, keyof Out>]: never }
export interface Type<T> extends Function {
    new(...args: any[]): T;
}